Combination License Models

Developing Applications Using The SoftwareShield System > Creating Licensing Solutions > Available License Models > Combination License Models

## Combination License Models

Virtually any of the Available License Models can be combined in a myriad of ways to achieve a huge number of precise models to suit your particular business needs.

For example, you may wish to combine Copy-Protection, as well as have a trial version that expires after two weeks, but that can be converted to a lease model when the customer purchases. If the trial expires or the lease expires, you can then convert the program into "demo mode" crippling some critical features but allowing the user to continue using it. This is just one example.

By carefully thinking through your business requirements and piecing together the various models and supporting tools we provide, you can achieve the exact model you require.

### Arbitrary Use

The license itself can be used by your program, through the ClientProtector (SSCProtector) in any way you wish, as a secure location to store and manipulate data. You have numerous User Defined Fields as well as User Details available inside the license that you can get and set that will persist between sessions. These Secure License Details, are there (generally) only for your programs benefit. With the exception of some types of Composite Payloads in Design-Time Composite Authorization Definitions, the values stored in these locations are not used directly by the ClientProtector license enforcement logic and are for your programs semantic interpretation.

So, use your imagination. There are virtually limitless ways to use the SoftwareShield System to enforce arbitrary details of your license, so we have created a simple example below to illustrate one possible (very simple) scenario.

The example shows the steps you might take if you (for example) wanted your user to register your product with your server by email, and if they chose not to register immediately, prompt them every time they start the program. Once they have registered, you want the program to remind them to visit your web-site for updates every 20th time they start the program.

1. The first step in this scenario is simply defining a license that has the necessary Authorization Definition. This Authorization Definition will track if the user has registered and if so - how many times the application has been started. Unlike an expiring execution count license - this Authorization Definition is completely passive (it is only for information). This Authorization Definition will be a "General Use" type and will require a parameter. You should enter a parameter description that explains that this parameter is for tracking how many times the application has been started for reminder purposes. Lets assume you assign this Authorization Definition to ID # 9 (for example). See Authorization Definitions in the Feature Guide for specific details on Authorization Definition types.

2. In your "form-load" or "startup" event - immediately call your required StartUp function on the ClientProtector and handle its returned values (if necessary). You should then check to see if your Authorization Definition ID# 9 has been activated and what its received parameter value is with a call to GetAuthorizationDetails. If not activated, your user has not yet registered and you should remind them to register. If it has been activated, you can use its parameter value to determine how many times the application has been subsequently started and increment it with a call to SetAuthorizationDetails. Once this value reaches 20, you can set it to zero and remind your user to visit your web-site. Various licenses you distribute may require different URLs to send users to or require different parameter values to be passed to ASP pages. You could easily store this information securely in the license inside a User Defined Field.

3. Its as easy as that. There are a limitless number of other scenarios which can be implemented using the SoftwareShield System. It can help you enforce arbitrary details of your license, which allows you to focus on functionality and not on security of implementation.